import * as util from './util';
import CryptoJS from 'crypto-js';
import {cryptoEscape} from "../weditor/utils";
import {getFileDownUrl} from "./util";
/*type说明
* video：上传的视频，走腾讯云的iframe type name ifrSrc
* nativevideo：原生video标签 type name src
* nativeaudio: 原生audio标签 type name src
* stdIframe: 标准的iframe type，name，ifrSrc
* flash: 知好乐的swf type name ifrSrc
* ZJflash: 职教库的flash，需要用embed播放
* onlyoffice
* */
const eRes = {
  editor: null,
  objImgSrc: null,
  PRIVATEKEY: 'data-meta',
  /**
   * 添加资源的主方法
   * @param type 资源类型
   * @param ifrSrc iframe地址
   * @param name 资源名称
   * @param src 资源地址
   * @param otherConfig 其他配置
   * @return {*}
   */
  addResource({type, ifrSrc, name, src, ...otherConfig}) {
    let str = this.getRawEle(type);
    let rawData = this.getRawData(arguments[0], type);
    let iconSrc = (otherConfig && otherConfig.iconType) || type;
    str = str.format(util.generateGuid(), this.getImgSrc(iconSrc), rawData); // 替代图的innerhtml
    this.wrapHtml(str, name, otherConfig && otherConfig.nameLink);
  },
  /**
   * 生成最终要嵌入编辑器的HTMLString
   * @param str 部分HTMLString
   * @param describe 资源名称
   * @param nameLink 资源地址
   */
  wrapHtml(str, describe, nameLink) {
    // 设置居中
    str = '<p style="text-align:center;" {0}>{1}</p>'.format(UE.browser.ie ? 'contenteditable="false"' : '', str);
    if (nameLink) {
      // 添加资源地址并居中
      str += `<p style="text-align:center;line-height: 2em;"><a href="${nameLink}" style='color:#0066cc;' target='_blank'>${describe.htmlEscape()}</a></p>`;
    } else if (describe) {
      // 添加描述并居中
      str += '<p style="text-align:center;line-height: 2em;">' + describe.htmlEscape() + '</p>';
    }
    this.addResToEditor(str);
  },
  /**
   * 根据资源类型的不同，生成不同的图片HTMLString
   * @param type 资源类型
   * @return {string}
   */
  getRawEle(type) {
    switch (type) {
      case "video":
        return '<img data_source="{0}" src="{1}" data-meta="{2}" style="max-width:100%;cursor:pointer;vertical-align: middle;" ' +
          'role="999" class="video_fake_img" data-nopop="1" onclick="parent.weditor.open(this)"/>';
      default:
        return '<img data_source="{0}" src="{1}" data-meta="{2}" style="max-width:100%;cursor:pointer;vertical-align: middle;" ' +
          'role="999" class="video_fake_img" data-nopop="1" onclick="parent.weditor.open(this)"/>';
    }
  },
  /**
   * 图片要绑定的数据
   * @param objData 数据对象
   * @param type 资源类型
   * @return {string}
   */
  getRawData(objData, type) {
    switch (type) {
      case "video":
      case "nativeaudio":
        return this.encodeObjData(objData);
      case "nativevideo":
        objData.poster = objData.poster || this.getImgSrc("videoPoster");
        return this.encodeObjData(objData);
      default:
        return this.encodeObjData(objData);
    }
  },
  /**
   * 编码json对象
   * @param obj
   */
  encodeObjData(obj){
    var key = CryptoJS.enc.Hex.parse("000102030405060708090a0b0c0d0e0f");
    var iv = CryptoJS.enc.Hex.parse("101112131415161718191a1b1c1d1e1f");
    let encRaw = CryptoJS.AES.encrypt(JSON.stringify(obj), key, {iv: iv});
    return cryptoEscape(encRaw.toString(), true);
  },
  /**
   * 嵌入编辑器
   * @param str HTMLString
   */
  addResToEditor(str) {
    this.getEditor().execCommand('insertHtml', str);
    this.getEditor().autoAdjustHeight();
  },
  /**
   * 惰性载入函数
   * @return
   */
  getEditor() {
    if (!this.editor) {
      this.editor = UE.getEditor(window.editorId);
      this.getEditor = () => {
        return this.editor;
      }
      return this.editor;
    }
  },
  /**
   * 返回图片地址
   * @param type
   * @return {string}
   */
  getImgSrc(type) {
    let hostname = location.hostname;
    if(!this.objImgSrc){
      // 默认占位图片地址未配置
      if(hostname.indexOf("192") >= 0 || hostname.indexOf("localhost") >= 0){
        // 测试站点和本地调试
        this.objImgSrc = {
          videoPoster: '06748ad0-f6fa-4ecc-a152-ecdaa51d2868.jpg', // video的poster
          video: '63a0a1d8-199c-41b8-a7ba-97044f7bfbcc.png', // 用户上传的视频和备课组或本校加入的视频
          nativeaudio: '791ff0bf-4ebe-494d-8303-d2775619f844.png', // 用户上传的音频和备课组或本校加入的音频
          'ZJ_book': '9554b4fe-a5f9-4149-9ea3-b974163b726e.png', // 知网资源的职教库加入的书
          'ZJ_prostd': '3148d7b7-9b85-4440-907a-a12d49f1a78a.png', // 知网资源的职教库加入的职业标准
          'office_doc': '0040902b-40ad-42be-bf7d-ca1360363c13.png', // 备课组或本校加入的doc
          'office_xls': 'e251e25a-4299-4fed-84d1-7a546dc4afb6.png', // 备课组或本校加入的xls
          'office_ppt': '9ae3f5f9-e642-4bbf-beaa-7ef86682037c.png', // 备课组或本校加入的ppt
          'office_pdf': '10c80f9a-d5ed-48fc-b052-8bd44c886148.png', // 备课组或本校加入的pdf
          'richtext': '317c092e-8da2-4dba-bddc-88b61720a7ee.png', // 本校加入的富文本

          'cnki_ppt': 'c8724f47-b198-475a-a0cb-539879270952.png', // 知网资源知好乐库加入的ppt
          'cnki_flash': '88097382-4e05-4364-9b6b-2d73d3c1cfc6.png', // 知网资源知好乐库加入的flash
          'cnki_video': '1d8e0a7b-54c9-4661-b184-f324e39bca32.png', // 知网资源知好乐库加入的video
          'cnki_audio': '4d95f87a-d3ed-4314-a11b-13e3cead2482.png', // 知网资源知好乐库加入的audio
          'cnki_literature': '77a42442-947e-4210-9612-97c535dcc935.png', // 知网资源总库和基教总库加入的文献
        };
      }else if(hostname.indexOf("cjl") >= 0){
        this.objImgSrc = {
          videoPoster: '5c81be6a-0b5e-45fc-8d56-962a61cb4fa8.jpg',
          video: '8942446e-0590-45b9-b97b-88d4d4e0f95e.png',
          nativeaudio: '7c11adb1-0f0e-4938-b236-9e3f1fa7e2fd.png',
          'ZJ_book': '5513da1a-e6d7-4844-8be1-20902afd026a.png',
          'ZJ_prostd': 'f7a3fc50-5dd3-4f30-8b56-6a210f4c904b.png',
          'office_doc': 'b0f89b88-0c61-4334-aa8a-f111278cbd3e.png',
          'office_xls': 'ad6af717-7c5c-4531-a1bf-c2bc63bc1661.png',
          'office_ppt': '2ac20f69-5ab7-4645-aa70-b7c5c6fef05d.png',
          'office_pdf': 'e400c22f-32b6-4ef6-a9f3-d371e3a94b85.png',
          'richtext':'491dd6ca-0e1d-49a2-9351-8b988d8bb57f.png',

          'cnki_ppt': 'd3c366bb-18eb-47e9-b199-6970761e1a21.png',
          'cnki_flash': '96c7ff30-8986-44e5-8095-908f8ed9c225.png',
          'cnki_video': '5f247cd3-e175-49b0-a809-e5bf919c7d44.png',
          'cnki_audio': 'c8edf4a8-a0a8-4daa-a91c-f525d66b582d.png',
          'cnki_literature': '6d40a498-7e44-4055-be29-127e4cdb2b5e.png'
        };
      }else {
        // 真实上线
        this.objImgSrc = {
          videoPoster: '49eb26ce-25aa-4ce8-a4ef-2051671337bf.jpg',
          video: 'b74994ab-0b8f-44e6-9511-4c070d7eff5f.png',
          nativeaudio: '7192c788-5272-4b3f-9197-991a2fd0b2da.png',
          'ZJ_book': '6a7c9468-9f35-4b4a-8405-6e3d05d8ef20.png',
          'ZJ_prostd': 'e92a3685-4e2e-4e6d-965f-abf273d723b3.png',
          'office_doc': '44806dc7-ecaf-4c94-8855-d5701347e826.png',
          'office_xls': '973ab5f6-4c87-4339-9f9e-97e5ee61dae6.png',
          'office_ppt': 'fa0fdaaa-0f80-417b-98da-6c5627605dc5.png',
          'office_pdf': '74c31d16-bf3b-4292-a38e-02efb98dc203.png',
          'richtext': '80f6f995-6253-42a6-8b5c-9779472ab352.png',

          'cnki_ppt': 'b008d6eb-ee8c-424a-9186-1ac88b0fdca3.png',
          'cnki_flash': 'd42cc282-343b-495c-8652-2b4a248eeec7.png',
          'cnki_video': 'd8449dc0-2f62-4806-8741-868adf3c4d92.png',
          'cnki_audio': '624b1917-398b-4b59-a0d8-4c1929414c9c.png',
          'cnki_literature': '5c6ff2f8-8aee-4d63-a7e9-9d718c21ee55.png',
        };
      }
    }
    return getFileDownUrl() + (this.objImgSrc[type] || this.objImgSrc["video"]);
  }
}
export default eRes;
